package modelo.dominio;

import java.util.ArrayList;

public class Pessoa {
	protected String nome;
	protected String telefone;
	protected String cpf;
	protected Endereco endereco;
        protected int codTipoPessoa;
        protected int codCliente;
	ArrayList<Pessoa> cadastro = new ArrayList <Pessoa>();
	
	//aqui sao os getters e setters
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	public Endereco getEndereco() {
		return endereco;
	}
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	
        public int getCodCliente() {
            return codCliente;
        }

        public void setCodCliente(int codCliente) {
            this.codCliente = codCliente;
        }

        public int getCodTipoPessoa() {
            return codTipoPessoa;
        }

        public void setCodTipoPessoa(int codTipoPessoa) {
            this.codTipoPessoa = codTipoPessoa;
        }
	//funcao que valida o Cpf, ou seja, verica se ele esta dentro dos padroes do calculo dos digitos verificadores
	
        public String deleteChar(String str, char c)  { 
            StringBuffer new_str = new StringBuffer();  
      
            for (int i=0; i<str.length(); i++){  
                if (str.charAt(i) != c){  
                    new_str.append( str.charAt(i) );    
                }   
            }  
      
            return new_str.toString();        
        } 
        
	public boolean validaCpf(String cpf) {
		int d1, d2;
		int digito1, digito2, resto;
		int digitoCPF;
		String nDigResult;
		
		d1 = d2 = 0;
		digito1 = digito2 = resto = 0;
		for (int nCount = 1; nCount < cpf.length() -1; nCount++) {
			digitoCPF = Integer.valueOf (cpf.substring(nCount -1, nCount)).intValue();
			d1 = d1 + ( 11 - nCount ) * digitoCPF;
			d2 = d2 + ( 12 - nCount ) * digitoCPF;
		};
		resto = (d1 % 11);
		if (resto < 2)
			digito1 = 0;
		else
			digito1 = 11 - resto;
			d2 += 2 * digito1;
			resto = (d2 % 11);
			if (resto < 2)
				digito2 = 0;
			else
				digito2 = 11 - resto;
				String nDigVerific = cpf.substring(cpf.length()-2, cpf.length());
				nDigResult = String.valueOf(digito1) + String.valueOf(digito2);
				return nDigVerific.equals(nDigResult);
	}
        
	//funcao que trata de exce��es do tipo cpf com menos numeros e cpf com 11 digitos iguais
	
	public boolean verificaCpf(String cpf){
		String str = "00000000000";
		String str1 = "11111111111";
		String str2 = "22222222222";
		String str3 = "33333333333";
		String str4 = "44444444444";
		String str5 = "55555555555";
		String str6 = "66666666666";
		String str7 = "77777777777";
		String str8 = "88888888888";
		String str9 = "99999999999";
		if ((cpf.length() != 11) || (cpf.equals(str)) || (cpf.equals(str1)) || (cpf.equals(str2)) || (cpf.equals(str3))
				 || (cpf.equals(str4)) || (cpf.equals(str5)) || (cpf.equals(str6)) || (cpf.equals(str7)) || (cpf.equals(str8))
				 || (cpf.equals(str9))) return false;
		else return true;
	}


}